El tiempo de espera para iniciar sesión esta entre 15 a 20 y en ocasiones hasta 30 segundos por lo que algunos usuarios les tiran error al iniciar sesión.
ELMAH System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> System.Data.SqlClient.SqlException: Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception: The wait operation timed out
--- End of inner exception stack trace ---
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action Ante este problema reportado lo que se ha realizado es lo siguiente: Se agregó el nombre de dominio al usuario ya que no lo tenía, pero no cambio nada, sigue con el mismo tiempo.
Se corrió la siguiente función desde el servidor de aplicaciones para probar el usuario de dominio fuera de Evolution, he identificar si también se tardaba el mismo tiempo que en Evolution, pero la respuesta fue rápida. function Test-ADCredential{ [CmdletBinding()] param( [pscredential]$Credential )
} Configuración de Servidor Aplicaciones: Disco Duro: 200 GB Memoria RAM: 8.00 GB Procesador: Intel Xeon CPU E5-2690 0 @ 2.90 GHz (2 Procesadores) OS: Windows 2016 Standard IIS: 10.0.14393.0 Configuración de Servidor DB: Disco Duro OS: 200 GB Disco Duro E (Backups): 500 GB Disco Duro F (Datos) : 200 GB Disco Duro G (Log): 100 GB Disco Duro H (TempDB): 50 GB Memoria RAM: 8.00 GB Procesador: Intel Xeon CPU E5-2650 v2 @ 2.60 Ghz (2 Procesadores) OS: Windows 2016 Standard 64 bits Microsoft SQL Server Standard (64-bit) Version: 13.0.4604.0 Version de Evolution Evolution 1.11.2.3 |
Ya se solvento el problema, se debía que la vista del cliente "sco.ptu_permisos_tpl_users" estaba estructurada de la siguiente manera: SELECT nullif(tpl_codigo,'') ptu_codtpl, isnull(usr_username, '') ptu_username FROM sec.usr_users_v JOIN sal.tpl_tipo_planilla ON sco.permiso_tipo_planilla(tpl_codigo, usr_username) = 1 El JOIN a la tabla tipo de planilla hacia mas lento el proceso. En actualizaciones recientes ya se maneja de la siguiente manera: SELECT cast(nullif(codtpl, 0) as int) ptu_codtpl, isnull(usr_username, '') ptu_username FROM sec.usr_users_v CROSS APPLY sco.permiso_tipo_planilla_tabla(usr_username) Utilizando un CROSS APPLY haciendo mas eficiente el proceso. |
Solo que el error no menciona nada sobre la autenticación o el dominio.
Y sucede posteriormente a la autenticación del usuario con AD. Específicamente sucede al intentar obtener las los tipos de planilla a los que tiene acceso.
Entonces la verificación debe hacerse del lado de la base de datos y porque sucedió ese error de Timeout. |
Derivado de su comentario, se revisaron los SQL que utiliza Evolution y el problema radica en el siguiente query exec sp_executesql N'SELECT 1 AS [C1], [Extent1].[ptu_codtpl] AS [ptu_codtpl], [Extent2].[tpl_descripcion] AS [tpl_descripcion] FROM (SELECT [ptu_permisos_tpl_users].[ptu_codtpl] AS [ptu_codtpl], [ptu_permisos_tpl_users].[ptu_username] AS [ptu_username] FROM [sco].[ptu_permisos_tpl_users] AS [ptu_permisos_tpl_users]) AS [Extent1] LEFT OUTER JOIN [sal].[tpl_tipo_planilla] AS [Extent2] ON [Extent1].[ptu_codtpl] = [Extent2].[tpl_codigo] WHERE [Extent1].[ptu_username] = @p__linq__0',N'@p__linq__0 varchar(8000)',@p__linq__0='mpadilla' Que se tarda entre 19 y 30 segundos en resolver. El problema estriba en que utiliza la vista [sco].[ptu_permisos_tpl_users] que es un CROSS APPLY entre la tabla de usuarios y la función de permisos de tipos de planilla por usuario Si se hace el query directo se resuelve rapidísimo SELECT cast(nullif(codtpl, 0) as int) ptu_codtpl, isnull(usr_username, '') ptu_username FROM sec.usr_users CROSS APPLY sco.permiso_tipo_planilla_tabla(usr_username) where usr_username = 'mpadilla' Pero al utilizar la vista, por tener que armar primero la vista es que se está tardando tanto tiempo. ¿Habrá forma de solucionarlo? |